"""
2.CSS选择器
    1.标签选择器:标签名
    2.ID选择器:#ID属性值
    3.class选择器: .class属性值
    4.层级选择器
        标签名[属性名="属性值"]>标签名
    5.层级+索引选择器
        标签名[属性名="属性值"]>:nth-child(n)  #  当前标签下的第N个子标签,不指定标签名称
        标签名[属性名="属性值"]>标签名:ntn-of-type(n)  # 当前标签下, 第N个指定的子标签
    6.模糊匹配 标签名[属性名*="部分属性值"]
    7.多属性选择器 标签名[属性名1="属性1"][属性名2="属性值2"]

3.总结
    1.selenium官方推荐使用CSS_SELECTOR元素定位方式
    2.CSS选择在HTML文件中, 查找元素的效率高

4.具体选择哪种定位方式
    1.根据公司要求定位方式
    2.公司没有要求选择--->哪种简单用哪个
        - 当标签有固定的ID属性时,优先使用ID
        - 定位a标签时,优先使用partial_link_text
        - 如果常规定位方式无法定位,选择使用xpath或CSS
"""

# 1.导入需要的包
from time import sleep
from selenium import webdriver
from selenium.webdriver.common.by import By

# 2.创建浏览器对象并打开浏览器
driver = webdriver.Chrome()
driver.maximize_window()  # 窗口最大化
driver.get("http://www.baidu.com")

# 3.元素定位+元素操作
# id选择器
# driver.find_element(By.CSS_SELECTOR, "#kw").send_keys("CSS")

# class选择器
# driver.find_element(By.CSS_SELECTOR, ".s_ipt").send_keys("CsS")

# 其他选择器
# driver.find_element(By.CSS_SELECTOR, 'input[name="wd"]').send_keys("css")

# 层级+索引
el1 = driver.find_element(By.CSS_SELECTOR, 'form[name="f"]>:nth-child(3)')
print(el1.get_attribute("outerHTML"))

el2 = driver.find_element(By.CSS_SELECTOR, 'form[action="/s"]>input:nth-of-type(8)')
print(el1.get_attribute("outerHTML"))

# 多属性选择器
driver.find_element(By.CSS_SELECTOR, 'input[value*="百"][type*="s"]').click()

# 4.关闭浏览器
sleep(5)
driver.quit()
